home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekkan Dennou Club 147
/
Gekkan Dennou Club - 2000.8 Vol. 147 (Japan).7z
/
Gekkan Dennou Club - 2000.8 Vol. 147 (Japan) (Track 1).bin
/
fdimg
/
—‹Œêsrc.lzh
/
under.c
< prev
next >
Wrap
C/C++ Source or Header
|
1992-12-09
|
5KB
|
216 lines
#include "3DDEF.H"
#include "GLOBAL.H"
#include "FORWARD.H"
#include "XCODE.H"
extern WORD UNDER_FLAG;
extern UINT under_first_x;
void
under_print_view(STR s)
{
B_LOCATE(0,YWIDTH0-2);
B_PRINT("\x1b[0K"); /* 1行クリア */
B_PRINT(s);
}
/* コントロール行に表示する */
void
under_print00(STR s)
{
window_abs_loc(0,UNDER_Y);
B_PRINT(s);
}
/* コントロール行に表示する */
void
under_print0(STR s)
{
window_abs_loc(0,UNDER_Y);
B_PRINT("\x1b[0K"); /* 1行クリア */
B_PRINT(s);
}
/* コントロール行に表示する */
/* カーソル座標を変えない */
void
under_print(STR s)
{
under_print0((STR) s);
work_cursor_cpx();
}
/* コントロール行に表示する */
/* カーソル座標を変えない */
/* 1行クリアはしない */
/* 指定位置から書く */
void
under_print_x(int x,UBYTE c)
{
window_abs_loc(x,UNDER_Y);
B_PUTC(c);
work_cursor_cpx();
}
/* コントロール行を消す */
void
under_blanc()
{
/* window_abs_loc(0,UNDER_Y);*/
B_CONSOL(0,YDOT[UNDER_Y],XWIDTH-1,0);
/* B_LOCATE(0,0);*/
B_PRINT("\x1b[\x20;\x20H\x1b[0K"); /* 1行クリア */
work_cursor_cpx();
}
/* 置換、検索用 */
/* コントロール行で入力を行なう */
/* 有効文字長を返す:無効なら-1を返す */
/* ESC と ^G で抜ける */
/* 変換を許す */
int
under_input_esc(STR first_mess,STR string_esc)
{
UBYTE c;
UBYTE p[MAXLINE];
UNDER_FLAG = 1;
under_print0((STR)""); /* カーソルを下に持っていったまま */
fep_xf_disp_1(first_mess);
under_first_x = (B_LOCATE(-1,0) >> 16);
c = fep_input_esc(p,MAXLINE/2,(STR) "\x1b\x07\x15\x1f"); /* ESC と ^G で抜ける */
UNDER_FLAG = 0;
if (c == '\x1b') { /* 有効 */
if (strlen(p)) { /* 何か入っている */
strcpy(string_esc,p);
} /* 何も入っていないならそのまま */
return(strlen(string_esc));
} else { /* ^G:無効 */
return(-1);
}
}
/* ファイル名入力用 */
/* コントロール行で入力を行なう */
/* 有効文字長を返す:無効なら-2を返す(^G) */
/* 有効文字長が0なら-1を返す */
/* 最後がスペースか ESC だったなら、有効文字長は0とする */
/* CR と ^J と SPACE と ^G で抜ける */
/* 変換を許す */
int
under_input_cr(STR first_mess,STR rets)
{
UWORD c;
UNDER_FLAG = 1;
under_blanc();
under_print0(first_mess);
under_first_x = (B_LOCATE(-1,0) >> 16);
c = fep_input_cr(rets,MAXLINE/2,(STR) "\x0a\x0d\x1b\x07\x15\x1f"); /* CR, ESC, SP と ^G で抜ける */
UNDER_FLAG = 0;
if ((c == '\x0a') || (c == '\x0d')) { /* 生で有効 */
if (strlen(rets)) { /* 何か入っている */
return(strlen(rets));
} else { /* 何も入っていないなら無効 */
return(-1);
}
} else { /* ^G,ESC:無効 */
return(-2);
}
}
#if 0
/* ファイル名入力用 */
/* コントロール行で入力を行なう */
/* 有効文字長を返す:無効なら-1を返す */
/* 最後がスペースか ESC だったなら、有効文字長は0とする */
/* CR と ^J と SPACE と ^G で抜ける */
/* 変換を許す */
int
under_input_cr(STR first_mess,STR rets)
{
UBYTE c;
UNDER_FLAG = 1;
under_blanc();
under_print0(first_mess);
under_first_x = (B_LOCATE(-1,0) >> 16);
c = fep_input_cr(rets,MAXLINE/2,(STR) "\x0a\x0d\x20\x1b\x07\x15\x1f"); /* CR, ESC, SP と ^G で抜ける */
UNDER_FLAG = 0;
if ((c == '\x0a') || (c == '\x0d')) { /* 生で有効 */
if (strlen(rets)) { /* 何か入っている */
return(strlen(rets));
} else { /* 何も入っていないなら無効 */
rets[0] = c;
rets[1] = EOS;
return(-1);
}
} else if (c == '\x1b') { /* ESC:無効 */
return(-1);
} else { /* ^G:無効 */
return(-1);
}
}
#endif
/* ファイル名入力用 */
/* コントロール行で入力を行なう */
/* 有効文字長を返す:無効なら-1を返す */
/* 最後が ESC だったなら、有効文字長は0とする */
/* CR と ^J と ESC と SPACE と ^G で抜ける */
/* 変換を許す */
int
under_input_cr_raw(STR first_mess,STR rets)/* 111,,, */
{
UBYTE w[16];
int r;
UNDER_FLAG = 1;
if (FP_MODE[3] == 'H') { /* 変換モードであった */
xf_push_cxf1();
strcpy(w,FP_MODE);
xf_do_121();
} else {
xf_push_cxf1();
strcpy(w,FP_MODE);
}
r = under_input_cr(first_mess,rets);
xf_pop_cxf1();
fep_mode_set(w);
UNDER_FLAG = 0;
return(r);
/* r = under_input_cr(first_mess,rets);*/
/* return(r);*/
}
#if 0
/* 置換元、置換先の文字列を入力する */
under_input2()
{
char ws[MAXLINE];
under_print("Replace [");
ctr_prints(w_string0); /* コントロールコードを変換して表示する */
printf("]<META> :");
if (under_input(ws,w_string0) > 0) { /* 有効な文字列を得た 0はダメ */
strcpy(w_string0,ws);
under_print("widh [");
ctr_prints(w_string1); /* コントロールコードを変換して表示する */
printf("]<META> :");
if (under_input(ws,w_string1) >= 0) { /* 有効な文字列を得た 0でも良い */
strcpy(w_string1,ws);
insert_cut_all(); /* 整行するして置換に備える */
under_blanc();
return(1);
}
}
under_blanc();
return(0);
}
#endif